'use strict'

const chai = require('chai')
const CLI = require('../../../../lib/classes/cli')
const Serverless = require('../../../../lib/serverless')

const { expect } = chai
chai.use(require('sinon-chai'))

describe('CLI', () => {
  let cli
  let serverless

  beforeEach(() => {
    serverless = new Serverless({ commands: [], options: {} })
  })

  describe('#constructor()', () => {
    it('should set the serverless instance', () => {
      cli = new CLI(serverless)
      expect(cli.serverless).to.deep.equal(serverless)
    })

    it('should set an empty loadedPlugins array', () => {
      cli = new CLI(serverless)
      expect(cli.loadedPlugins.length).to.equal(0)
    })
  })

  describe('#setLoadedPlugins()', () => {
    it('should set the loadedPlugins array with the given plugin instances', () => {
      class PluginMock {}

      const pluginMock = new PluginMock()
      const plugins = [pluginMock]

      cli = new CLI(serverless)

      cli.setLoadedPlugins(plugins)

      expect(cli.loadedPlugins[0]).to.equal(pluginMock)
    })
  })
})
